﻿Public Class IsverenPrimBorcu2009
	'Inherits Process

	'Dim PrimBorclari As DataTable
	'Dim DonemlikBorclar As DataTable
	'Dim OdemePlani As DataTable
	'Dim Bordrolar As DataTable

	'Dim Toplam(2) As OdemePlani
	'Dim Pesin(2) As OdemePlani
	'Dim Taksit(2) As OdemePlani

	'Dim Yatirimlar As Recordset
	'Dim Raporlar As Recordset
	'Dim GirisCikis As Recordset
	'Dim Basamaklar As Recordset

	'Dim DogumTar, EmeklilikTar As Date
	'Dim Kimliksiz As Boolean
	'Dim AraTarih(1) As String

	'Public Overrides Sub GenericEvent(ByVal e As ProcessEventArgs)
	'	Select Case e.EventType
	'		Case EventType.Initialize
	'			Text ="İşveren Taksitlendirme (2009)"
	'			Kimliksiz = Window.Menu.Name = "taksit9"
	'			If Not Kimliksiz Then
	'				InitialHelp = "Kimlik bilgisini girin."
	'				AddField("@Sigortali", "nl")
	'				AddDateRange("Tarih", "", "19760101", "20090630")
	'				AddField("Tarih[name=pesintar;label=Peşin Öde.Tar.]", "nl", YMD(Today))
	'			Else
	'				InitialHelp = "Bilgileri girin."
	'				AddField("@Basamak")
	'				AddField("TehlikeSinifi")
	'				AddDateRange("Tarih", "", "19760101", "20090630")
	'			End If
	'			StartBody()
	'			AddReport()
	'			Display()
	'			PrimBorclari = New Recordset("bordrotar(d),basamak(i),gun(i),h(i),d(i),j(i),e(i),l(i),has(i),ana(i),isk(i),hborc(m),jborc(m),lborc(m),anapara(m),ceza(m),toplam(m),tehlike(i)")
	'			Bordrolar = New Recordset("bordrotar(d),bordro(s),isyerino(s),anapara(m),ceza(m),toplam(m),tur(s)")
	'			DonemlikBorclar = New Recordset("donem(s),anapara(m),ceza(m),toplam(m)")
	'			OdemePlani = New Recordset("donem(s),anapara(m),ceza(m),toplam(m),taksit(b)")
	'		Case EventType.ValidateForm
	'			If Not Kimliksiz Then
	'				If Check("Sigortali", IsEmpty("Sigortali"), "Sigortalı bilgisini girmelisiniz.") Then Exit Sub
	'				If Not Hukuk.Af.GenelIsverenOku(Local, 2009, Input("Sigortali")).EOF Then
	'					If Not Confirm("Bu sigortalı için daha önce bir ödeme planı hazırlanmıştı. Ödeme planını değiştirmek mi istiyorsunuz?") Then
	'						ShowReport()
	'						Exit Sub
	'					End If
	'					OdemePlaniniDegistir()
	'					Exit Sub
	'				End If
	'				TablolariOku()
	'				If GirisCikis.Rows.Count = 0 Then
	'					Focus("Sigortali")
	'					Warning("Sigortalının işveren statüsünde kaydı bulunamadı.", "İşveren olarak taksitlendirilmesi için sigortalının bir işte işveren statüsünde çalışmış olması gerekir.")
	'					Exit Sub
	'				End If
	'				BorcHesapla()
	'				If PrimBorclari.Rows.Count = 0 Then
	'					Focus("Sigortali")
	'					Warning("Sigortalının ilgili döneme ait borcu bulunamadı.")
	'					Exit Sub
	'				End If
	'			Else
	'				BorcHesapla()
	'			End If
	'			DonemlikBorcHesapla()
	'			PesinatOranıHesapla()
	'			RaporHazirla()
	'			e.Result = True
	'		Case EventType.Save
	'			Dim Process As New OdemePlaniGirisi
	'			Process.AddArgument("tur", "sno")
	'			Process.AddArgument("key", Input("Sigortali"))
	'			Process.AddArgument("rs", OdemePlani)
	'			Process.Run(Window)
	'			If Process.Result = "" Then Exit Sub
	'			Hukuk.Af.KaydetSigortali(Local, 2009, Input("Sigortali"), Input("pesintar"), Process.Result, OdemePlani, AraTarih, Bordrolar)
	'			ShowReport()
	'		Case EventType.ReportHeader
	'			Select Case Report.Layout
	'				Case 0
	'					Report.PrintHeader("PRİM BORÇLARI ÖDEME PLANI")
	'					Dim Rs1 As Recordset = Nothing
	'					If Not Kimliksiz Then Rs1 = Sigortali.SnoAra(Remote, Input("Sigortali"))
	'					Report.BeginBorders()
	'					Report.SetColumns("", "1;1;3;1;1", "c;c;l;c;c", "-")
	'					Report.Print("<b><cs=5>SİGORTALI BİLGİLERİ")
	'					Report.FontSize = "--"
	'					Report.Print("<b>Kimlik No.", "<b>Sigorta No.", "<b>Adı Soyadı", "<b>Yat.Tipi", "<b>Peşin Öde.Tar.")
	'					If Not Kimliksiz Then
	'						Report.Print(Rs1("kimlik"), Rs1("sno"), RTrim(Rs1("adi")) & " " & RTrim(Rs1("soyadi")), "H-J-L", "")
	'					Else
	'						Report.Print("", "", "", "H-J-L", "")
	'					End If
	'					Report.SkipLine()
	'					Report.SetColumns("", "3;2;2;2;2;2;2;2;2;2", "c;c;c;c;c;c;c;c;c;c", "-")
	'					Report.Print("<b><cs=10>ÖDENECEK PRİM VE CEZA TOPLAMLARI")
	'					Report.FontSize = "--"
	'					Report.Print("<rs=2><b>Dönem", "<cs=3><b>Toplam Borç", "<cs=3><b>Peşin Ödenecek", "<cs=3><b>Taksitlendirilecek")
	'					Report.Print("<b>Anapara", "<b>Ceza (%30)", "<b>Toplam", "<b>Anapara", "<b>Ceza (%30)", "<b>Toplam", "<b>Anapara", "<b>Ceza (%30)", "<b>Toplam")
	'					Report.SetColumns("", "3;2;2;2;2;2;2;2;2;2", "c;m;m;m;m;m;m;m;m;m")
	'					For j As Integer = 0 To 2
	'						Dim Donem As String = Choose(j + 1, "<b>2000 Öncesi", "<b>2000 Sonrası", "<b>Toplam")
	'						Report.Print(Donem, Toplam(j).Anapara, Toplam(j).Ceza, Toplam(j).Toplam, Pesin(j).Anapara, Pesin(j).Ceza, Pesin(j).Toplam, Taksit(j).Anapara, Taksit(j).Ceza, Taksit(j).Toplam)
	'					Next
	'					Report.EndBorders()
	'					Report.SkipLine()
	'				Case 1
	'					Report.EndBorders()
	'					Report.ProgressMaximum = PrimBorclari.Rows.Count
	'					Report.CenteredLine()
	'					Report.Print("PRİM BORCU DÖKÜMÜ")
	'					Report.SkipLine()
	'			End Select
	'		Case EventType.PageHeader
	'			Select Case Report.Layout
	'				Case 0
	'					Report.BeginBorders()
	'					Report.SetColumns("", "1", "c", "-")
	'					Report.Print("<b>TAKSİTLENDİRİLEN KISMA AİT ÖDEME PLANI")
	'					Report.FontSize = "--"
	'					Report.SetColumns("<b>Dönem;<b>Ödenecek Anapara;<b>Ödenecek Ceza;<b>Toplam", "2;2;2;2", "c;m;m;m")
	'				Case 1
	'					Report.BeginBorders()
	'					Report.SetColumns("", "2;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;2;2", "c;c;c;c;c;c;c;c;c;c;c;c;c;c;c;r;r;r", "---")
	'					Report.Print("<rs=2>Dönem", "<rs=2>Bas.", "<rs=2>T.S.", "<rs=2>Gün", "<cs=5>Yatırılan", "<cs=3>Geçici İşgör.", "<cs=6>Yatırılması Gereken")
	'					Report.Print("H", "D", "J", "E", "L", "Has.", "Ana.", "İşk.", "H", "J", "L", "Anapara", "Ceza", "Toplam")
	'			End Select
	'		Case EventType.ReportDetail
	'			Select Case Report.Layout
	'				Case 0
	'					For Each Row As DataRow In OdemePlani.Rows
	'						If Row("taksit") Then Report.Print(Row("donem"), Row("anapara"), Row("ceza"), Row("toplam"))
	'					Next
	'					Report.Print("Toplam", OdemePlani.Compute("sum(anapara)", "taksit=true"), OdemePlani.Compute("sum(ceza)", "taksit=true"), OdemePlani.Compute("sum(toplam)", "taksit=true"))
	'					Report.EndPage()
	'					e.Result = True
	'				Case 1
	'					For Each Row As DataRow In PrimBorclari.Rows
	'						Report.Print(Row("bordrotar"), Fne(Row("basamak")), Row("tehlike"), Fne(Row("gun")), _
	'								  Fne(Row("h")), Fne(Row("d")), Fne(Row("j")), Fne(Row("e")), Fne(Row("l")), _
	'								  Fne(Row("has")), Fne(Row("ana")), Fne(Row("isk")), _
	'								  Fne(Row("hborc")), Fne(Row("jborc")), Fne(Row("lborc")), Fm(Row("anapara")), Fm(Row("ceza")), Fm(Row("toplam")))
	'					Next
	'					Report.Print("<cs=15>", Fm(PrimBorclari.Compute("sum(anapara)", "")), Fm(PrimBorclari.Compute("sum(ceza)", "")), Fm(PrimBorclari.Compute("sum(toplam)", "")))
	'			End Select
	'	End Select
	'End Sub

	'Function GetDonem(ByVal Tarih As Date) As String
	'	Return Trim(Tarih.Year) & "/" & ((Tarih.Month - 1) \ 3) + 1
	'End Function

	'Sub ShowReport()
	'	Dim Rapor As New OdemePlaniRaporuIsveren2009
	'	Rapor.BranchSelection = True
	'	Rapor.QueryString = "sno=" & Input("Sigortali")
	'	Close()
	'	Rapor.Run(Window)
	'End Sub

	'Sub TablolariOku()
	'	Dim Rs As Recordset = Sigortali.SnoAra(Remote, Input("Sigortali"))
	'	DogumTar = Rs("dtar")
	'	EmeklilikTar = If(IsDBNull(Rs("maasbtar")), "2099/01/01", Rs("maasbtar"))
	'	Yatirimlar = Hukuk.Af.Tablo.Yatirimlar(Remote, Input("Sigortali"))
	'	Raporlar = Hukuk.Af.Tablo.Raporlar(Remote, Input("Sigortali"))
	'	GirisCikis = Hukuk.Af.Tablo.GirisCikis(Remote, Input("Sigortali"))
	'	Basamaklar = Hukuk.Af.Tablo.Basamaklar(Remote, Input("Sigortali"))
	'End Sub

	'Sub BorcHesapla()
	'	Dim Donem As String = ""
	'	Dim Tarih As Date = Input("Tarih1")
	'	Bordrolar.Rows.Clear()
	'	PrimBorclari.Rows.Clear()
	'	Do Until Tarih > Input("Tarih2")
	'		BorcHesaplaAyIcin(Tarih)
	'		Tarih = Tarih.AddDays(1 - Tarih.Day).AddMonths(1)
	'	Loop
	'End Sub

	'Sub BorcHesaplaAyIcin(ByVal Tarih As Date)
	'	Dim Dr As DataRow
	'	If Kimliksiz Then
	'		Dr = PrimBorclari.Rows.Add(Tarih, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
	'		Dr("basamak") = Input("Basamak")
	'		Dr("hborc") = 30
	'		Dim Oran As Decimal = Prim.Oran(Tarih, "H", Input("TehlikeSinifi"))
	'		Dim Anapara As Decimal = Prim.Tutar(Remote, Tarih, 1, Dr("basamak")) * Dr("hborc") / 30 * Oran / 100
	'		Dim Ceza As Decimal = Prim.GecikmeZammiHesabi("H", Tarih, Today) * Anapara / 100
	'		Dr("anapara") += Anapara
	'		Dr("ceza") += Ceza
	'		Dr("toplam") = Dr("anapara") + Dr("ceza")
	'		Exit Sub
	'	End If
	'	Dim Interval As New Interval(Tarih, Tarih.AddDays(1 - Tarih.Day).AddMonths(1).AddDays(-1))
	'	Dim Isyerleri As New Collection
	'	Dim Isyeri As DataRow = Nothing
	'	For Each Row As DataRow In GirisCikis.Rows
	'		Dim IsInterval As New Interval(Row("Tarih1"), Row("Tarih2"))
	'		If Interval.OverlappingDays(IsInterval) > 0 Then
	'			Isyerleri.Add(IsInterval)
	'			If Isyeri Is Nothing Then
	'				Isyeri = Row
	'			ElseIf Row("tehlike") > Isyeri("tehlike") Then
	'				Isyeri = Row
	'			End If
	'		End If
	'	Next
	'	If Isyerleri.Count = 0 Then Exit Sub
	'	Dr = PrimBorclari.Rows.Add(Tarih, 1, Interval.OverlappingDays(Isyerleri(1)), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
	'	Dr("tehlike") = Isyeri("tehlike")
	'	For Each Row As DataRow In Raporlar.Rows
	'		Dr(Row("tur")) = Dr(Row("tur")) + Interval.OverlappingDays(New Interval(Row("Tarih1"), Row("Tarih2")))
	'	Next
	'	For Each Row As DataRow In Yatirimlar.Select("bordrotar = '" & Tarih.ToString("yyyy-MM-01") & "'")
	'		If InStr("DHEJL", Row("bordro")) > 0 Then Dr(Row("bordro")) = Dr(Row("bordro")) + Row("pogs")
	'	Next
	'	Dim GunSayisi As Integer = Dr("gun") - (Dr("has") + Dr("ana") + Dr("isk"))
	'	If GunSayisi <= 0 Then Exit Sub
	'	If Dr("h") + Dr("j") + Dr("l") >= GunSayisi Then
	'		PrimBorclari.Rows.Remove(Dr)
	'		Exit Sub
	'	End If
	'	For Each Row As DataRow In Basamaklar.Rows
	'		If Row("tarih") > Tarih.AddMonths(1).AddDays(-1) Then Exit For
	'		Dr("basamak") = Row("basamak")
	'	Next
	'	If Dr("basamak") < 6 And DogumTar.AddYears(31) <= Dr("bordrotar") Then Dr("basamak") = 6
	'	If Tarih < EmeklilikTar And Dr("l") = 0 And Dr("d") = 0 Then
	'		Dr("hborc") = GunSayisi - Dr("h")
	'	ElseIf Tarih >= EmeklilikTar And Dr("l") = 0 And Dr("e") = 0 And Dr("d") = 0 Then
	'		Dr("jborc") = GunSayisi - Dr("j")
	'	ElseIf Dr("l") >= GunSayisi Then
	'		PrimBorclari.Rows.Remove(Dr)
	'		Exit Sub
	'	Else
	'		If Tarih < EmeklilikTar Then
	'			Dr("lborc") = Dr("d") - Dr("l")
	'			Dr("hborc") = Dr("gun") - Dr("lborc") - Dr("l") - Dr("h")
	'		Else
	'			Dr("lborc") = Dr("e") + Dr("d") - Dr("l")
	'			Dr("jborc") = Dr("gun") - Dr("lborc") - Dr("l") - Dr("j")
	'		End If
	'	End If
	'	For Each Bordro As Object In Split("h-j-l", "-")
	'		If Dr(Bordro & "borc") > 0 Then
	'			Dim Oran As Decimal = Prim.Oran(Tarih, UCase(Bordro), Isyeri("tehlike"))
	'			Dim Anapara As Decimal = Prim.Tutar(Remote, Tarih, 1, Dr("basamak"), Input("pesintar")) * Dr(Bordro & "borc") / 30 * Oran / 100
	'			Dim Ceza As Decimal = Prim.GecikmeZammiHesabi(UCase(Bordro), Tarih, Input("pesintar")) * Anapara / 100
	'			Dr("anapara") += Anapara
	'			Dr("ceza") += Ceza
	'			Bordrolar.Rows.Add(Tarih, UCase(Bordro), Isyeri("isyerino"), Anapara, Ceza, Anapara + Ceza, "P")
	'		End If
	'	Next
	'	Dr("toplam") = Dr("anapara") + Dr("ceza")
	'End Sub

	'Sub DonemlikBorcHesapla()
	'	Dim Donem As String = ""
	'	Dim DRow As DataRow = Nothing
	'	DonemlikBorclar.Rows.Clear()
	'	For Each Row As DataRow In PrimBorclari.Rows
	'		Dim YeniDonem As String = Trim(Row("bordrotar").Year) & "/" & ((Row("bordrotar").Month - 1) \ 3 + 1)
	'		If YeniDonem <> Donem Then
	'			Donem = YeniDonem
	'			DRow = DonemlikBorclar.Rows.Add(Donem, 0, 0)
	'		End If
	'		DRow("anapara") += Row("anapara")
	'		DRow("ceza") += Math.Round(Row("ceza") * 0.3, 2)
	'	Next
	'End Sub

	'Sub PesinatOranıHesapla()
	'	For i As Integer = 0 To 2
	'		Toplam(i) = New OdemePlani
	'	Next
	'	For i As Integer = 0 To 1
	'		Dim Kosul As String = "donem" & Choose(i + 1, "<", ">=") & "'2000'"
	'		If Not (i = 0 And DonemlikBorclar.Rows(0)("donem") > "2000") And Not (i = 1 And DonemlikBorclar.Rows(DonemlikBorclar.Rows.Count - 1)("donem") < "2000") Then
	'			For Each Row As DataRow In DonemlikBorclar.Select(Kosul)
	'				Toplam(i).Anapara += Row("anapara")
	'				Toplam(i).Ceza += Row("ceza")
	'			Next
	'		End If
	'	Next
	'End Sub

	'Sub RaporHazirla()
	'	OdemePlaniHazirla()
	'	Report.Begin()
	'	If Not Kimliksiz Then
	'		Buttons.Show("Next.Restart")
	'		Help = "Ödeme planını ve aylara göre borç dağılımını içeren döküm hazırlanmıştır. Taksitlendirme için Devam butonuna tıklayın."
	'		Buttons.Focus("Next")
	'	Else
	'		Buttons.Show("Reset")
	'		Help = "Ödeme planını ve aylara göre borç dağılımını içeren döküm hazırlanmıştır."
	'	End If
	'End Sub

	'Sub OdemePlaniHazirla()
	'	OdemePlani.Rows.Clear()
	'	For i As Integer = 0 To 2
	'		Pesin(i) = New OdemePlani
	'		Taksit(i) = New OdemePlani
	'	Next
	'	For i As Integer = 0 To 1
	'		If Toplam(i).Toplam > 0 Then
	'			Dim Rows() As DataRow = DonemlikBorclar.Select("donem" & Choose(i + 1, "<", ">=") & "'2000'", "donem")
	'			Dim AraToplam As Decimal = 0
	'			Dim SinirAsildi As Boolean = False
	'			Dim Carpan As Decimal = 0.3
	'			Dim Esik As Decimal = Toplam(i).Anapara * Carpan
	'			For j As Integer = 0 To UBound(Rows)
	'				If Not SinirAsildi Then
	'					'Sınır aşılmadı
	'					Dim YeniAraToplam As Decimal = AraToplam + Rows(j)("anapara")
	'					SinirAsildi = YeniAraToplam > Esik And Not (j = 0 And UBound(Rows) > 0)
	'					If SinirAsildi Then
	'						AraTarih(i) = Rows(j)("donem")
	'						Taksit(i).Anapara = Toplam(i).Anapara - Pesin(i).Anapara
	'						Taksit(i).Ceza = Toplam(i).Ceza - Pesin(i).Ceza
	'					Else
	'						Pesin(i).Anapara += Rows(j)("anapara")
	'						Pesin(i).Ceza += Rows(j)("ceza")
	'						AraToplam = YeniAraToplam
	'					End If
	'				End If
	'				Dim Row As DataRow = OdemePlani.NewRow
	'				Row("donem") = Rows(j)("donem")
	'				Row("anapara") = Rows(j)("anapara")
	'				Row("ceza") = Rows(j)("ceza")
	'				Row("toplam") = Row("anapara") + Row("ceza")
	'				Row("taksit") = SinirAsildi
	'				OdemePlani.Rows.Add(Row)
	'			Next
	'		End If
	'	Next
	'	Pesin(2).Anapara = Pesin(0).Anapara + Pesin(1).Anapara
	'	Pesin(2).Ceza = Pesin(0).Ceza + Pesin(1).Ceza
	'	Taksit(2).Anapara = Taksit(0).Anapara + Taksit(1).Anapara
	'	Taksit(2).Ceza = Taksit(0).Ceza + Taksit(1).Ceza
	'	Toplam(2).Anapara = Toplam(0).Anapara + Toplam(1).Anapara
	'	Toplam(2).Ceza = Toplam(0).Ceza + Toplam(1).Ceza
	'End Sub

	'Sub OdemePlaniniDegistir()
	'	Dim Process As New OdemePlaniGirisi
	'	Hukuk.Af.OdemePlaniSnoOku(Local, 2009, Input("Sigortali"), OdemePlani)
	'	Process.AddArgument("tur", "sno")
	'	Process.AddArgument("key", Input("Sigortali"))
	'	Process.AddArgument("rs", OdemePlani)
	'	Process.Run(Window)
	'	If Process.Result = "" Then Focus("Sigortali") : Exit Sub
	'	Rs.MoveFirst()
	'	Dim Dates = Split(Process.Result, ",")
	'	Dim i As Integer = 0
	'	Do Until Rs.EOF
	'		Hukuk.Af.OdemePlaniDegistirSigortali(Local, 2009, Input("Sigortali"), Rs("donem"), CDate(Dates(i) & "/01"))
	'		i += 1
	'		Rs.MoveNext()
	'	Loop
	'	ShowReport()
	'End Sub

End Class

